home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 1 / QRZ Ham Radio Callsign Database - December 1993.iso / ucsd / packet / tcpip / amiga / asrc29k.lha / udpdump.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-08  |  973 b   |  55 lines

  1. #include <stdio.h>
  2. #include "global.h"
  3. #include "mbuf.h"
  4. #include "netuser.h"
  5. #include "internet.h"
  6. #include "udp.h"
  7. #include "ip.h"
  8. #include "socket.h"
  9. #include "trace.h"
  10.  
  11. /* Dump a UDP header */
  12. void udp_dump(fp,bpp,source,dest,check)
  13. FILE *fp;
  14. struct mbuf **bpp;
  15. int32 source,dest;
  16. int check;        /* If 0, bypass checksum verify */
  17. {
  18.     struct udp udp;
  19.     struct pseudo_header ph;
  20.     int16 csum;
  21.  
  22.     if(bpp == NULLBUFP || *bpp == NULLBUF)
  23.         return;
  24.  
  25.     fprintf(fp,"UDP:");
  26.  
  27.     /* Compute checksum */
  28.     ph.source = source;
  29.     ph.dest = dest;
  30.     ph.protocol = UDP_PTCL;
  31.     ph.length = len_p(*bpp);
  32.     if((csum = cksum(&ph,*bpp,ph.length)) == 0)
  33.         check = 0;    /* No checksum error */
  34.  
  35.     ntohudp(&udp,bpp);
  36.  
  37.     fprintf(fp," %u->%u",udp.source,udp.dest);
  38.     fprintf(fp," len %u",udp.length);
  39.     if(udp.checksum == 0)
  40.         check = 0;
  41.     if(check)
  42.         fprintf(fp," CHECKSUM ERROR (%u)",csum);
  43.  
  44.     fputc('\n',fp);
  45.  
  46.     switch(udp.dest){
  47.     case IPPORT_RIP:
  48.         rip_dump(fp,bpp);
  49.     case IPPORT_RWHO:
  50.         rwho_dump(fp,bpp);
  51.     }
  52.  
  53. }
  54.  
  55.